#!/usr/bin/env python3
"""
Titanic数据分析平台启动脚本
"""
import os
import sys
import subprocess
import webbrowser
import time

def check_dependencies():
    """检查依赖包是否已安装"""
    required_packages = ['nicegui', 'pandas', 'plotly', 'numpy']
    missing_packages = []
    
    for package in required_packages:
        try:
            __import__(package)
        except ImportError:
            missing_packages.append(package)
    
    if missing_packages:
        print(f"❌ 缺少以下依赖包: {', '.join(missing_packages)}")
        print("请运行以下命令安装依赖:")
        print("pip install -r requirements.txt")
        return False
    
    print("✅ 所有依赖包已安装")
    return True

def check_data_files():
    """检查数据文件是否存在"""
    data_files = ['data/train.csv', 'data/test.csv']
    missing_files = []
    
    for file_path in data_files:
        if not os.path.exists(file_path):
            missing_files.append(file_path)
    
    if missing_files:
        print(f"❌ 缺少以下数据文件: {', '.join(missing_files)}")
        print("请确保数据文件存在于 data/ 目录中")
        return False
    
    print("✅ 数据文件检查通过")
    return True

def start_application():
    """启动应用程序"""
    print("🚀 启动Titanic数据分析平台...")
    print("📊 应用将在浏览器中自动打开")
    print("🌐 访问地址: http://localhost:8080")
    print("⏹️  按 Ctrl+C 停止应用")
    print("-" * 50)
    
    try:
        # 启动应用
        subprocess.run([sys.executable, "app.py"], check=True)
    except KeyboardInterrupt:
        print("\n👋 应用已停止")
    except subprocess.CalledProcessError as e:
        print(f"❌ 应用启动失败: {e}")
        return False
    
    return True

def main():
    """主函数"""
    print("=" * 50)
    print("🎯 Titanic数据分析平台")
    print("=" * 50)
    
    # 检查依赖
    if not check_dependencies():
        return
    
    # 检查数据文件
    if not check_data_files():
        return
    
    print("\n🎉 环境检查通过，准备启动应用...")
    
    # 等待2秒后自动打开浏览器
    time.sleep(2)
    try:
        webbrowser.open('http://localhost:8080')
    except:
        print("⚠️  无法自动打开浏览器，请手动访问 http://localhost:8080")
    
    # 启动应用
    start_application()

if __name__ == "__main__":
    main() 